package com.xyy.saas.payment.adpater.jdCredit.req;
import com.jddglobal.open.request.base.JddRequest;
import com.jddglobal.open.support.util.JacksonUtils;
import com.xyy.saas.payment.adpater.jdCredit.resp.SmapiResponse;
import lombok.Data;
import org.apache.http.client.utils.DateUtils;

import java.util.Date;
import java.util.Map;

/**
 * 推送订单请求参数
 *
 * @author yuchengying
 * @date 2023/12/07
 */
@Data
public class PayOrderReq implements JddRequest<SmapiResponse> {
    /**
     * 请求编号
     */
    private String reqNo;
    /**
     * 请求时间:yyyyMMddHHmmss
     */
    private String reqDate;
    /**
     * 业务编号
     */
    private String bizNo;
    /**
     * 产品编号
     */
    private String productCode;
    /**
     * 合作方编号
     */
    private String partnerCode;
    /**
     * 客户编码
     */
    private String custCode;
    /**
     * 核心企业编码
     */
    private String coreCompanyCode;
    /**
     * 订单编号
     */
    private String orderCode;
    /**
     * 订单金额
     */
    private String orderAmount;
    /**
     * 申请金额
     */
    private String applyAmount;
    /**
     * 订单创建时间 yyyyMMddHHmmss
     */
    private String createDate;
    /**
     * 订单有效期 yyyyMMddHHmmss
     */
    private String expireDate;
    /**
     * 订单描述
     */
    private String orderDesc;
    /**
     * 订单状态
     *  CREATED	创建
     *  FINISH	已完成
     *  EXPIRED	过期
     *  CANCEL	取消
     *  FAIL	失败
     */
    private String orderStatus;

    /**
     * 订单支付状态
     *  UNPAY	待支付
     *  PROCESS	处理中
     *  PAYING	支付处理中
     */
    private String payStatus;
    /**
     * 收款账户名称
     */
    private String receiveName;
    /**
     * 收款账户
     */
    private String receiveAccount;
    /**
     * 风控数据
     */
    private Map<String,Object> riskControlParams;

    /**
     * 融资通知地址
     */
    private String financeNotifyUrl;
    /**
     * 还款通知地址
     */
    private String repayNotifyUrl;
    /**
     * 渠道来源
     */
    private String channelSource;
    /**
     * 附件信息
     */
    private Map<String,Object> attachment;

    private Map<String,Object> ext;

    @Override
    public String getApiMethod() {
        return "/smapi/v1/nav/pushPayOrder";
    }

    @Override
    public String getRequestTime() {
        return DateUtils.formatDate(new Date(), "yyyyMMddHHmmssSSS");
    }

    @Override
    public Class getResponseClass() {
        return SmapiResponse.class;
    }
    @Override
    public String getJsonParams() {
        return JacksonUtils.toJson(this);
    }
}
